package com.produce.system.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.produce.common.util.UUIDUtils;
import com.produce.system.dao.SysMenuDao;
import com.produce.system.entity.SysMenu;
import com.produce.system.service.SysMenuService;


@Service("SysMenuService")
public class SysMenuServiceImpl implements SysMenuService {

	@Resource
	private SysMenuDao sysMenuDao;
	
	/**
	 * 登录显示菜单
	 */
	@Override
	public List<SysMenu> getByParentId(String parentId){
		return sysMenuDao.getByParentId(parentId);
	}
	/**
	 * 菜单出列表
	 */
	@Override
	public List<SysMenu> findForTreeTable(String parentId) {
		return sysMenuDao.findForTreeTable(parentId);
	}
	/**
	 * 最大的排序值
	 */
	@Override
	public int findMaxSortNum() {
		return sysMenuDao.findMaxSortNum();
	}
	/**
	 * 新增菜单  父节点
	 */
	@Override
	public List<SysMenu> find(SysMenu menu) {
		return sysMenuDao.find(menu);
	}
	/**
	 * 新增菜单
	 */
	@Override
	public void add(SysMenu menu) {
		menu.setUmresourceid(UUIDUtils.getUUID());
		sysMenuDao.add(menu);
	}
	/**
	 * 带id进菜单的修改页面
	 */
	@Override
	public SysMenu getById(String id) {
		return sysMenuDao.getById(id);
	}
	/**
	 * 菜单的修改
	 */
	@Override
	public void update(SysMenu menu) {
		sysMenuDao.update(menu);
	}
	/**
	 * 删除菜单操作  包含子菜单      后续加上  删除与菜单授权相关的数据
	 */
	@Override
	public void delete(String id) {
		deleteChildren(id);
		sysMenuDao.delete(id);
	}

	public void deleteChildren(String id){
		SysMenu param = new SysMenu();
		param.setUmresourceparentid(id);
		List<SysMenu> children = sysMenuDao.find(param);
		if(children != null && children.size() > 0){
			for(SysMenu child : children){
				deleteChildren(child.getUmresourceid());
			}
			sysMenuDao.deleteByParentId(id); 
		}
	}
	/**
	 * 角色的所有菜单
	 */
	@Override
	public List<String> findByRoleId(String roleId) {
		return sysMenuDao.findByRoleId(roleId);
	}
}
